<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <!-- 和可以被 K 整除的子数组

```
给定一个整数数组 nums 和一个整数 k ，返回其中元素之和可被 k 整除的（连续、非空） 子数组 的数目。
子数组 是数组的 连续 部分。

示例 1：
输入：nums = [4,5,0,-2,-3,1], k = 5
输出：7
解释：
有 7 个子数组满足其元素之和可被 k = 5 整除：
[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]
 -->
</head>
<body>
  <script>
var subarraysDivByK = function (nums, k) {
	let len = nums.length
	let befores = [0]
	for (let i = 0; i < len; i++) {
		befores.push(befores[i] + nums[i])
	}
	let count = 0
	let map = new Map()
	map.set(0, 1)
	for (let i = 1; i <= len; i++) {
		let mod = ((befores[i] % k) + k) % k
		if (map.has(mod)) {
			count += map.get(mod)
		}
		let c = map.has(mod) ? map.get(mod) : 0
		map.set(mod, c + 1)
	}
	return count
}
console.log(subarraysDivByK([4,5,0,-2,-3,1],5));
  </script>
</body>
</html>